//token
//令牌 校验是否有效的访问者
//token 是后端生成的 加密生成 返回给前端
//前端 要把token 储存本地  sessionStorage
//每次ajax 前端要把token 返回给后端
//后端  先要判断token 是否有效准确

var jwt = require("jsonwebtoken")

var secret = "wuhan2004-daydayup"

// var data={ //需要加密的字段
//     user:"xumengjuan", 
//     passsword:"abc123"
// }

var createToken = function(data){
    return jwt.sign(data,secret,{expiresIn:"2h"})

}

exports.createToken = createToken

//token 解密
var decodeToken = function(token){
    return new Promise(function(resove,reject){
        jwt.verify(token,secret,(err,data)=>{
            if(err){
                reject(err)
            }else{
                console.log(data)  //解密后的明文
                resove(data)
            }
        })
    })
}


//检查token是否有效
//1.token 不存在
//2.token 过期
//3.token 不正确
//拿到token进行校验，看
var checkToken = function(req,res,callback){
    var token = req.headers.token;  // 接受前端发送过来的token  马上进行判断  
    if(token){
        decodeToken(token)
        .then(data=>{
        
            callback(data);  // 解密成功的回调 
        })
        .catch(err=>{
            // console.log(err);
            res.json({
                code:3200,
                msg:"token无效,请立即登录",
                err,
                type:0,
            })
        })

    }else{
        res.json({
            code:3200,
            msg:"token不存在,请立即登录",
            type:0,
        })
    }
}

exports.checkToken = checkToken